package bean;

import dao.JogoDAO;
import java.io.IOException;
import model.entity.Jogo;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import javax.transaction.RollbackException;

/**
 *
 * @author CesarFrantz
 */
@ManagedBean
@RequestScoped
public class JogoBean {

    private JogoDAO jogoDAO = new JogoDAO();
    private Jogo jogo = new Jogo();

    private String ordem = "menor";

    public String getOrdem() {
        return ordem;
    }

    public void setOrdem(String ordem) {
        this.ordem = ordem;
    }

    public JogoDAO getJogoDAO() {
        return jogoDAO;
    }

    public void setJogoDAO(JogoDAO jogoDAO) {
        this.jogoDAO = jogoDAO;
    }

    public Jogo getJogo() {
        return jogo;
    }

    public void setJogo(Jogo jogo) {
        this.jogo = jogo;
    }

    public String cadastraJogo() throws RollbackException {
        jogoDAO.addJogo(jogo);
        return "index.xhtml";
    }

    public List<Jogo> buscar() {
        return jogoDAO.findAll();
    }

    public List<Jogo> buscarLancamentoPC() {
        return jogoDAO.LancamentoPC();
    }

    public List<Jogo> buscarLancamentoXbox() {
        return jogoDAO.LancamentoXbox();
    }

    public List<Jogo> buscarLancamentoWii() {
        return jogoDAO.LancamentoWii();
    }

    public List<Jogo> buscarLancamentoPlay() {
        return jogoDAO.LancamentoPlay();
    }

    public String selecionaJogo(int idjogo) {
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("idjogo", idjogo);
        return "jogo.xhtml";
    }

    public Jogo findJogoById(int idjogo) {
        return jogoDAO.findById(idjogo);
    }

    public List<Jogo> buscarJogos() {
        Integer idusuario = (FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user_id") != null) ? (Integer) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user_id") : null;
        if (idusuario == null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Você precisa estar logado para prosseguir!"));
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(JogoBean.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return jogoDAO.buscarJogosCarrinho(idusuario); //PEGAR O ID DO USUARIO
    }

    public List<Jogo> buscaJogosPlatTipo(String plat, String tipo) {
        return jogoDAO.findJogoByPlatETipo(plat, tipo);
    }

    public String pegaTipo() {
        return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tipo");
    }

    public String pegaPlat() {
        return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("plat");
    }

    public List<Jogo> buscaMuliplosFiltros(String nome, String plat) {
        return jogoDAO.buscaMultipla(nome, plat);
    }

    public List<Jogo> buscaPrecos(String botao) {
        if (botao.equals("menor")) {
            return jogoDAO.buscaPrecosMenores();
        } else {
            return jogoDAO.buscaPrecosMaiores();
        }
    }

    public String trocaOrdem(String ordem) {
        this.ordem = ordem;
        return "precos.xhtml";
    }

    public String ativarDec() {
        if (this.ordem.equals("menor")) {
            return "false";
        } else {
            return "true";
        }
    }

    public String ativarCres() {
        if (this.ordem.equals("menor")) {
            return "true";
        } else {
            return "false";
        }
    }

}
